#include "usart_com.h"

// 初始化usart0
void usart0_init(uint32_t baudval)
{
    // 时钟设置
    rcu_periph_clock_enable(RCU_USART0);
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_AF);
    // io设置
    gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
    gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
    // 参数设置
    usart_deinit(USART0);
    usart_baudrate_set(USART0, baudval);
    usart_parity_config(USART0, USART_PM_NONE);
    usart_word_length_set(USART0, USART_WL_8BIT);
    usart_stop_bit_set(USART0, USART_STB_1BIT);
    // 使能发送和接受
    usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
    usart_receive_config(USART0, USART_RECEIVE_ENABLE);
    // 使能usart0
    usart_enable(USART0);
}
// 发送一个字节
void usart0_send_byte(uint8_t ch)
{
    usart_data_transmit(USART0, ch);
    while (RESET == usart_flag_get(USART0, USART_FLAG_TBE))
        ;
}
// 发送一个字符串
void usart0_send_string(uint8_t *ch)
{
    uint32_t i = 0;
    while (*(ch + i) != '\0')
    {
        usart0_send_byte(*(ch + i));
        i++;
    }
}
